// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
    setTimeout(() => {
        document.body.classList.add('sidenav-pinned')
        document.body.classList.add('ready')
    }, 200)
})

/******** 封装一个轻提示的函数 ********/
function tip(msg = '提示文字') {
    const toastBox = document.querySelector('#myToast')

    // const toast = new bootstrap.Toast(提示框盒子元素对象, 配置对象)
    const toast = new bootstrap.Toast(toastBox, {
        animation: true, // 是否启用过渡动画
        autohide: true, // 是否自动隐藏提示框
        delay: 2000, // 3000ms后自动隐藏提示框
    })
    // 修改提示框盒子中的文字
    toastBox.querySelector('.toast-body').innerHTML = msg

    toast.show()
}

/******** 设置请求的根地址 ********/
axios.defaults.baseURL = 'http://ajax-api.itheima.net'

/******** 渲染用户名（很多个页面都需要渲染，所以写在公共文件中） ********/
const username = document.querySelector('.navbar-nav .font-weight-bold')
if (username) {
    username.innerHTML = localStorage.getItem('user-name')
}

/******** 退出登录 ********/
const logout = document.querySelector('#logout')
if (logout) {
    logout.addEventListener('click', function () {
        // 清除本地存储的token
        localStorage.removeItem('user-token')
        localStorage.removeItem('user-name')
        // 跳转到登录页
        location.href = './login.html'
    })
}

/******** 请求拦截器 ********/
// 添加请求拦截器（请求发送出去之前执行的一个函数）
axios.interceptors.request.use(
    function (config) {
        // 在发送请求之前做些什么
        // alert('发送请求之前')
        // console.log('请求拦截器中的config', config)
        // config 发送ajax请求时，设置的配置项对象

        /******** 请求拦截器的应用：在请求头中，设置token数据 ********/
        const token = localStorage.getItem('user-token')
        if (token) {
            config.headers.authorization = token
        }

        return config
    },
    function (error) {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

/******** 响应拦截器 ********/
// 添加响应拦截器
axios.interceptors.response.use(
    function (response) {
        // 对响应数据做点什么
        // alert('拦截到了一个成功的响应')
        // console.log('拦截到了一个成功的响应')
        // console.log('拦截成功响应', response)
        // response结果数据，返回了response
        // return 'ok'
        // return response
        // 剥离一层数据
        return response.data
    },
    function (error) {
        // 对响应错误做点什么
        // alert('拦截到了一个失败的响应')
        // console.log('拦截到了一个失败的响应')
        // console.dir(error)
        /******** 响应拦截器应用1：统一处理token失效的错误 ********/
        if (error.response.status === 401) {
            alert('token失效了')
            // 清除失效的token
            localStorage.removeItem('user-token')
            localStorage.removeItem('user-name')
            // 跳转页面
            location.href = './login.html'
            return
        }

        return Promise.reject(error)
    }
)
